package room_utils

import (
	"hft/Database/admin"
	"strconv"
	"strings"
	"unicode"
)

func ExtractFirstNumber(input string) (int, error) {
	var numStr string

	// 遍历字符串，找到第一个连续的数字串
	for _, char := range input {
		if unicode.IsDigit(char) {
			numStr += string(char)
		} else {
			// 如果遇到非数字字符，并且已经提取到数字串，则结束循环
			if numStr != "" {
				break
			}
		}
	}

	if numStr == "" {
		return 0, nil
	}

	// 将提取到的数字串转换为 int
	num, err := strconv.Atoi(numStr)
	if err != nil {
		return 0, err
	}

	return num, nil
}

// 返回某字符串前面的第一个连串数字
func ExtractDigitsBeforeSubstring(input, substr string) int {
	index := strings.Index(input, substr)

	if index == -1 {
		return 0
	}

	var numStr string

	for i := index - 1; i >= 0; i-- {
		if unicode.IsDigit(rune(input[i])) {
			numStr = string(input[i]) + numStr
		} else {
			break
		}
	}

	if numStr == "" {
		return 0
	}

	num, err := strconv.Atoi(numStr)
	if err != nil {
		return 0
	}

	return num
}

// 判断东南西北
func JustOrie(orie string) int {
	switch orie {
	case "东":
		return 1
	case "东南":
		return 2
	case "南":
		return 3
	case "西南":
		return 4
	case "西":
		return 5
	case "西北":
		return 6
	case "北":
		return 7
	case "东北":
		return 8
	case "南北":
		return 9
	case "南向":
		return 3
	case "南北对流":
		return 9
	default:
		return 0
	}
}

// 找出楼盘
func FindLou(list []*admin.LouPan, id uint) *admin.LouPan {
	for _, v := range list {
		if v.ID == id {
			return v
		}
	}
	return nil
}

// 确定物业类型
func ConfirmPro(hcate string) int {
	switch hcate {
	case "住宅":
		return 1
	case "公寓":
		return 2
	case "别墅":
		return 3
	case "洋房":
		return 4
	case "写字楼":
		return 5
	case "商铺":
		return 6
	default:
		return 1
	}
}
